package com.zlk.algorithm.huawei.leetcode.hash;

import org.junit.Test;

import java.util.*;

/**
 * @program: algorithm
 * @ClassName Code02_GroupAnagrams
 * @description:
 * 给你一个字符串数组，请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
 * 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
 * @author: slfang
 * @create: 2024-12-31 13:41
 * @Version 1.0
 **/
public class Code02_GroupAnagrams {

    public List<List<String>> groupAnagrams(String[] strs) {
        List<List<String>>  ans = new ArrayList<>();
        HashMap<String,List<String>> map = new HashMap<>();
        for (String str : strs) {
            char[] chars = str.toCharArray();
            Arrays.sort(chars);
            String key = new String(chars);
            List<String> list = map.getOrDefault(key, new ArrayList<>());
            list.add(str);
            map.put(key,list);
        }
        for (Map.Entry<String, List<String>> entry : map.entrySet()) {
            ans.add(entry.getValue());
        }
        return ans;
    }


}
